package lift_simulator;
/**
 * インプットファイルから受け取った行単位の情報です。<br>
 * 人が<b>何時に</b>、<b>どこから</b>、<b>どこへ行きたい</b><br>
 * という情報の他に、<br>
 * ・もう乗れる状態か？<br>
 * ・実際には何秒で乗ったか？<br>
 * ・実際には何秒で降りたか<br>
 * という要素も持っています。
 * @author Yone6379univ
 *
 */
public class Task {
	/**
	 * 識別番号(列1)
	 */
    private int id;
    /**
	 * 希望乗車時刻(列2)
	 */
    private int boardTime;
    /**
	 * 乗車階(列3)
	 * TODO 乗り継ぎを利用する場合、今後setterを追加します。
	 */
    private int board;
    /**
	 * 降車階(列4)
	 */
    private int descend;
    /**
	 * 乗れる状態か
	 */
    private boolean canRide;
    /**
	 * 実際には何秒で乗ったか？
	 */
    private int boardResult;
    /**
	 * 実際には何秒で降りたか？
	 */
    private int descendResult;
	public Task(String id, String boardTime, String board, String descend) {
		this.id = Integer.parseInt(id);
		this.boardTime = Integer.parseInt(boardTime);
		this.board = Integer.parseInt(board);
		this.descend = Integer.parseInt((descend));
		this.canRide=false;
		this.boardResult=-1;
		this.descendResult=-1;
	}
	public int getId() {
		return id;
	}
	public int getBoardTime() {
		return boardTime;
	}
	public int getBoard() {
		return board;
	}
	public int getDescend() {
		return descend;
	}
	public boolean isCanRide() {
		return canRide;
	}
	public void setCanRide(boolean canRide) {
		this.canRide = canRide;
	}
	public int getBoardResult() {
		return boardResult;
	}
	public int getDescendResult() {
		return descendResult;
	}
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Task){
			return id==((Task)obj).id;
		}else{
			return false;
		}
	}
	
	@Override
	public int hashCode() {
		return id;
	}
	@Override
	public String toString() {
		return id+":"+board+"->"+descend;
	}
	/**
	 * @param boardResult セットする boardResult
	 */
	public void setBoardResult(int boardResult) {
		this.boardResult = boardResult;
	}
	/**
	 * @param descendResult セットする descendResult
	 */
	public void setDescendResult(int descendResult) {
		this.descendResult = descendResult;
	}
}
